package cn.iocoder.yudao.module.exam.controller.admin.exam.vo;

import cn.iocoder.yudao.module.exam.controller.admin.paper.vo.PaperRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 考试新增/修改 Request VO")
@Data
public class ExamSaveReqVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26272")
    private Long id;

    @Schema(description = "考试名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @NotEmpty(message = "考试名称不能为空")
    private String examName;

    @Schema(description = "试卷id", example = "1341")
    private Long paperId;

    @Schema(description = "试卷名称", example = "赵六")
    private String paperName;

    @Schema(description = "考试时长（分钟）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "考试时长（分钟）不能为空")
    private Integer duration;

    @Schema(description = "总分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "总分不能为空")
    private BigDecimal totalScore;

    @Schema(description = "及格分数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "及格分数不能为空")
    private BigDecimal passingScore;

    @Schema(description = "开始时间")
    private LocalDateTime startTime;

    @Schema(description = "结束时间")
    private LocalDateTime endTime;

    @Schema(description = "结束设置 0 及格结束 1 不限次数 2 限制次数", example = "2")
    private Integer endType;

    @Schema(description = "考试次数设置")
    private Integer testNum;

    @Schema(description = "成绩设置 0 最高分 1 最后一次", example = "2")
     private Integer scoreType;


    @Schema(description = "单选题数量")
    private Integer singleChoiceNum;

    @Schema(description = "多选题数量")
    private Integer multipleChoiceNum;

    @Schema(description = "判断题数量")
    private Integer trueFalseNum;

    @Schema(description = "简答题数量")
    private Integer shortAnswerNum;

    @Schema(description = "问答题数量")
    private Integer essayNum;

    @Schema(description = "单选题分值")
    private BigDecimal singleChoiceScore;

    @Schema(description = "多选题分值")
    private BigDecimal multipleChoiceScore;

    @Schema(description = "多选题漏选分值")
    private BigDecimal multipleChoicePartialScore;

    @Schema(description = "判断题分值")
    private BigDecimal trueFalseScore;

    @Schema(description = "填空题总分")
    private BigDecimal fillTotalScore;

    @Schema(description = "单选题总分")
    private BigDecimal singleChoiceTotalScore;

    @Schema(description = "多选题总分")
    private BigDecimal multipleChoiceTotalScore;

    @Schema(description = "计算题数量")
    private Integer calculateNum;

    @Schema(description = "填空题数量")
    private Integer fillNum;

    @Schema(description = "简答题总分")
    private BigDecimal shortAnswerTotalScore;

    @Schema(description = "问答题总分")
    private BigDecimal essayTotalScore;

    @Schema(description = "计算题总分")
    private BigDecimal calculateTotalScore;

    @Schema(description = "简单题数")
    private Integer easyNum;

    @Schema(description = "一般题数")
    private Integer commonNum;

    @Schema(description = "中等题数")
    private Integer mediumNum;

    @Schema(description = "困难题数")
    private Integer difficultNum;

    @Schema(description = "极难题数")
    private Integer extremelyDifficultNum;

    @Schema(description = "简单总分")
    private BigDecimal easyTotalScore;

    @Schema(description = "一般总分")
    private BigDecimal commonTotalScore;

    @Schema(description = "中等总分")
    private BigDecimal mediumTotalScore;

    @Schema(description = "困难总分")
    private BigDecimal difficultTotalScore;

    @Schema(description = "极难总分")
    private BigDecimal extremelyDifficultTotalScore;

    @Schema(description = "出题类型 0 无 1 难易 2 知识点", example = "2")
     private Integer testType;

    @Schema(description = "试卷类型 0 固定 1随机", example = "1")
     private Integer paperType;

    @Schema(description = "试卷信息")
    private PaperRespVO paperInfo;

}